
// 节流，如果在业务场景中传入多个类型不一样的参数，这边规定参数传入 ...args ，但是由于各个参数类型不一样，使用泛型的话会被第一个传递参数的类型限制，后面的参数延用这个参数类型，就无法使用，暂时只能用any
export function throttle<T>(fn: (...arg: T[]) => void , wait: number): (...arg: T[]) => void  {
  let canRun: boolean = true
  return (...arg: T[]) => {
    if (!canRun) return
    canRun = false
    setTimeout(() => {
      fn(...arg)
      canRun = true
    }, wait)
  }
}

throttle<{ e: Event, arr: number[] }>((params: { e: Event, arr: number[] }) => {

}, 1000)